package com.wzy.rabbitmqapi.quickstart;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class Producer {
    public static void main(String[] args) throws IOException, TimeoutException {
        //1创建一个ConnectionFactory,用于创建mq的物理链接
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("127.0.0.1");
        connectionFactory.setPort(5672);
        connectionFactory.setUsername("guest");
        connectionFactory.setPassword("guest");
        connectionFactory.setVirtualHost("/test");
        //2.通过连接工厂创建连接,获得了TCP 物理连接
        Connection connection = connectionFactory.newConnection();
        //3.创建一个Channel(通信通道,相当于tcp中的虚拟连接);
        Channel channel = connection.createChannel();
        //4.绑定队列,
        //第一个参数,队列的名字,唯一
        // 第二个参数:是否持久化,
        // 第三个参数:是否队列私有化,false代表所有消费这可以使用,true:只有第一次拥有他的消费者才有权利使用,
        // 第四个参数代表:连接停掉后是否自动删除这个创建的队列
        //第五个参数: 额外的参数
        channel.queueDeclare("helloworld",false,false,false,null);
        //5.发送数据
        //第一个参数: exchange:交换机
        //第二个参数: 队列的名称
        //第三个参数: 额外的参数
        //第四个参数: 传递的消息字节内容
        channel.basicPublish("","helloworld",null,"hello,world".getBytes());

        //6.关闭连接
        channel.close();
        connection.close();
        System.out.println("发送完毕");



//        String exchange = "test_consumer_exchange";
//        String routingKey = "consumer.save";
//        String msg = "hello RabbitMQ";
//
//        for (int i = 0; i < 5; i++) {
//            //4.通过channel发送消息
//            channel.basicPublish(exchange, routingKey, null, msg.getBytes());
//        }
//        //5.关闭连接
//        channel.close();
//        connection.close();
    }
}
